var AlarmIndex =function(){
	return {
		//初始化表格
		initTable : function(){
			$('.dataTable').bootstrapTable({
	            url: ctx +'/equipment/alarm/definition/list/get.mvc',         //请求后台的URL（*）
	            method: 'get',                      //请求方式（*）
	            striped: true,                      //是否显示行间隔色
	            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
	            pagination: true,                   //是否显示分页（*）
	            paginationLoop:false,
	            sortable: true,                     //是否启用排序
	            sortOrder: "asc",                   //排序方式
	            queryParams: AlarmIndex.queryParams,//传递参数（*）
	            sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
	            pageNumber:1,                       //初始化加载第一页，默认第一页
	            pageSize: 10,                       //每页的记录行数（*）
	            pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
	            search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
	            strictSearch: true,
	            showColumns: false,                  //是否显示所有的列
	            showRefresh: false,                  //是否显示刷新按钮
	            minimumCountColumns: 2,             //最少允许的列数
	            clickToSelect: true,                //是否启用点击选中行
	            height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
	            uniqueId: "pkId",                     //每一行的唯一标识，一般为主键列
	            showToggle:false,                    //是否显示详细视图和列表视图的切换按钮
	            cardView: false,                    //是否显示详细视图
	            detailView: false,                   //是否显示父子表
	            singleSelect:false,                    //禁止多选
	            checkboxHeader:true,                 //列头取消多选
	            
	            
	            columns: [
				{
					checkbox:true,
					align : 'center',
				    valign : 'middle'
				},
	            {
	            	title: '序号',
	            	align : 'center',
	                valign : 'middle',
	                formatter : function (value, row, index){
	                	var options = $('.dataTable').bootstrapTable('getOptions');  
	                    return options.pageSize * (options.pageNumber - 1) + index + 1;  
	                }
	            },
	            {
	                field: 'modelCode',
	                title: '设备型号',
	                sortable:false,
	                align : 'center',
	                valign : 'middle'
	                
	            }, {
	                field: 'eqCode',
	                title: '设备编号',
	                sortable:false,
	                align : 'center',
	                valign : 'middle'
	            }, {
	                field: 'eqName',
	                title: '设备名称',
	                sortable:false,
	                align : 'center',
	                valign : 'middle'
	            },{
	                field: 'paramName',
	                title: '预警参数名称',
	                sortable:false,
	                align : 'center',
	                valign : 'middle'
	                
	            },{
	                field: 'paramUnit',
	                title: '预警参数单位',
	                sortable:false,
	                align : 'center',
	                valign : 'middle'
	            },{
	                field: 'paramStandard',
	                title: '参数标准数据',
	                sortable:false,
	                align : 'center',
	                valign : 'middle'
	            },{
	                field: 'paramRange',
	                title: '参数预警范围',
	                sortable:false,
	                align : 'center',
	                valign : 'middle',
	                formatter : function (value, row, index){
	                	return "大于"+row.minimaValue+",小于"+row.maximaValue;
	                }
	            },{
	                field: 'paramPromptName',
	                title: '预警提示名称',
	                sortable:false,
	                align : 'center',
	                valign : 'middle'
	            },{
	                field: 'date',
	                title: '定义修改时间',
	                sortable:false,
	                align : 'center',
	                valign : 'middle',
	                formatter : function(value ,row ,index){
			    if (value) {
	                	return new Date(value).format('yyyy-MM-dd hh:mm:ss');
     			    } else {
                                return ''
                            }
                        }
                    }, {
                        field: 'pkId',
                        title: 'pkId',
                        visible: false
	            }]

	        });
		},
		queryParams : function (params) {
	        var temp = {   // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
	        	size: params.limit,   // 页面大小
	        	num: (params.offset/params.limit) + 1,  // 页码
	        	sort: params.sort,
	        	order: params.order,
	        	eqCode:$(".eqCode").val(),
	        	equipName:$(".eqName").val()
	        	
	        };
	        return temp;
	    },
	    
	  //点击下拉框--设备型号信息
		getEmModel : function(modelId){
			
				$.ajax({
					url: ctx +'/equipment/type/listAllModel/get.mvc',
				    type:"post",
				    dataType:'json',
				    data : '',
				    success : function(data){
				    	$("#myModal .modelCode option").remove();
				    	$("#myModal .modelCode").append('<option value="">请选择</option>');
			    		for (var i = 0; i < data.length; i++) {
			    			var option="<option value='"+data[i].modelCode+"' ";
			    			if(data[i].pkId === modelId){
			    				option+=" selected = 'selected' ";
			    			}
			    			option+=">"+ data[i].modelCode + "</option>";
				    		$("#myModal .modelCode").append(option);
				        } 
				    	
				    	
				    },
				    error: function(XMLHttpRequest, textStatus, errorThrown){
				    	console.log(data);
				    	alert("系统错误");
				    }
				});
		},
		/**
		 * 根据设备类别查找设备
		 */
		getEquipment : function(modelCode,eqCode){
			if("" === modelCode){
				return false;
			}
			
			$.ajax({
				url:ctx+'/equipment/register/listAllEquipmentByModelCode/get.mvc',
				type:'post',
				dataType:'json',
				data:{modelCode:modelCode},
				success:function(data){
					$("#myModal .eqCode option").remove();
					$("#myModal .eqCode").append('<option value="">请选择</option>');
					
					for (var i = 0; i < data.data.length; i++) {
						
						var option="<option value='"+data.data[i].equipCode+"'  data-name='"+data.data[i].equipName+"' ";
		    			if(data.data[i].equipCode == eqCode){
		    				option+=" selected = 'selected' ";
		    				$("#myModal .eqName").val(data.data[i].equipName);
		    			}
		    			option+=">" + data.data[i].equipCode + "</option>";
			    		$("#myModal .eqCode").append(option);
			           }
                		}
			});

		},
		
		/**
		 * 根据设备类别查找参数
		 */
		getParam : function(modelCode,paramName){
			if("" === modelCode){
				return false;
			}
			
			$.ajax({
				url:ctx+'/equipment/param/listModelParamsByModelCode/get.mvc',
				type:'post',
				dataType:'json',
				data:{modelCode:modelCode},
				success:function(data){
					$("#myModal .paramName option").remove();
					$("#myModal .paramName").append('<option value="">请选择</option>');
					for (var i = 0; i < data.length; i++) {
						
					    var option="<option value='"+data[i].pkId+"'  data-range='"+data[i].processRange+"' ";
		    			    if(data[i].paramName == paramName){
		    				option+=" selected = 'selected' ";
		    				$("#myModal .paramUnit").val(data[i].processRange);
		    				
		    			    }
		    			    option+=">" + data[i].paramName + "</option>";
			    		    $("#myModal .paramName").append(option);
                  	 		}
				 } 
			});

		},
		/**
		 * 清空模态框
		 */
		clear : function(){
			
			$("#myModal").on("hidden.bs.modal",function(e){
//				
				/*$(".modelCode").focus();*/
				
				$(".errorDiv").hide();
				
				$('#myModal input').each(function() {
					if ($(this).val() !== "" || $(this).prop('checked') === true) {
						$(this).val("").prop('checked', false);
					}
				});
				$('#myModal select').each(function() {
					$(this).empty();
					$(this).append('<option value="">请选择</option>');
				});
				
				$('.addForm').data('bootstrapValidator').destroy();
				AlarmIndex.validatorForm();
				
			});		
			$("#myModal").on("hide.bs.modal",function(e){
				
				$(".content-box-2").scrollTop(0);
			});		
			
			
		},

	  //校验表单
		validatorForm : function(){
			$(".addForm").bootstrapValidator({
				message: 'This value is not valid',
	            live: 'submitted',
	            fields: {
	            	equipCode:{
	            		message: '设备编号无效',
	                    validators: {
	                    	
	                        callback: {
	                        	message: '必须选择一个',
		                        callback: function(value, validator) {
                                    return value !== "";
                                }
                            }

                        }
                    },
                    modelCode: {
                        message: '设备型号无效',
                        validators: {

                            callback: {
                                message: '必须选择一个',
                                callback: function (value, validator) {
                                    return value !== "";
                                }
                            }

                        }
                    
		    },
	            	paramId:{
	            		message: '预警参数无效',
	                    validators: {
	                    	
	                        callback: {
	                        	message: '必须选择一个',
		                        callback: function(value, validator) {
                                   	     return value !== "";
                                
					}
	                        }
	                    }
	            	},
	            	standardValue: {
	                    message: '参数标准数据无效',
	                    validators: {
	                    	stringLength: {
	                            min: 0,
	                            max: 20,
	                            message: '参数标准数据长度不能超过20个字符'
	                        },
	                        notEmpty: {
	                            message: '参数标准数据不能为空'
	                        },
	                        numeric: {
	                        	message: '只能输入数字'
	                        },
	                        regexp: {
	                        	 regexp: /^\d+(\.\d{0,2})?$|^[a-zA-Z]?$|^[^a-zA-Z\d]{0,}$/,
		                         message: '参数标准数据不能是负数，最多支持2位小数'
	                        }
	                        
	                    }
	                },
	                /*maximaValue: {
	                    message: '预警参数范围无效',
	                    validators: {
	                    	stringLength: {
	                            min: 0,
	                            max: 20,
	                            message: '预警参数范围长度不能超过20个字符'
	                        },
	                        notEmpty: {
	                            message: '不能为空'
	                        },
	                        numeric: {message: '只能输入数字'},
	                        callback : {
	                        	message : '最大值小于最小值',
	                        	callback : function(value, validator, $field){
	                        		var min = validator.getFieldElements('minimaValue').val();//获得另一个的值
	                        		if(value>min){
	                        			
	                        		}else{
	                        			return false;
	                        		}
	                        		
	                        		return true;
	                        		
	                        	}
	                        }
	                        
	                    }
	                },
	                minimaValue: {
	                    message: '预警参数范围无效',
	                    validators: {
	                    	stringLength: {
	                            min: 0,
	                            max: 20,
	                            message: '预警参数范围长度不能超过20个字符'
	                        },
	                        notEmpty: {
	                            message: '不能为空'
	                        },
	                        numeric: {message: '只能输入数字'},
	                        callback : {
	                        	message : '最小值大于最大值',
	                        	callback : function(value, validator, $field){
	                        		if(value ==""){
	                        			return true;
	                        		}
	                        		var max = validator.getFieldElements('maximaValue').val();//获得另一个的值
	                        		if(value>max){
	                        			return false;
	                        		}else{
	                        			return true;
	                        		}
	                        	}
	                        }
	                    }
	                },*/
	                promptName: {
	                    message:'预警提示名称',
	                    validators: {
	                    	stringLength: {
	                            min: 0,
	                            max: 20,
	                            message: '预警提示名称长度不能超过20个字符'
	                        },
	                        notEmpty: {
	                            message: '预警提示名称不能为空'
	                        }
	                    }
	                }
	                
	                
	            }
			});

		},
		/**
		 * 查询
		 */
		query : function(){
			$(".time-set .search").on("click",function(){
				
				$('.dataTable').bootstrapTable("refresh");
			});
			
			$(".time-set .eqName").keypress(function (e) {
	            if (e.which === 13) {
	                $(".time-set .search").trigger("click");
	            }
	        });
			
		},
		
		reset : function(){
			$(".reset").on("click",function(){
				$(".eqName").val("");
				$(".queryEquipment").empty(); 
			});
		}
	    

	    
	};
}();

var AlarmUtil= function(){
	return {
		init : function(){
			AlarmUtil.add();
			AlarmUtil.update();
			AlarmUtil.deleteDefinition();
			AlarmUtil.refresh();
			AlarmUtil.modelChange();
			AlarmUtil.eqCodeChange();
			AlarmUtil.paramNameChange();
			AlarmUtil.validateAlarmValue();
		},
		//增
		add : function(){
			$(".crud .add").on("click",function(){
				$("#myModal .title").html("新增");
				
				$("#myModal").modal();
				AlarmIndex.getEmModel();
				$("#myModal .yes").attr("disabled",false);
			});
			
			$("#myModal .yes").on("click","",function(){
				
				$(".errorDiv").hide();
				$(".addForm").data("bootstrapValidator").validate();
				var flag = $(".addForm").data("bootstrapValidator").isValid();
				
				//单独校验最大值最小值
				var max =$(".addForm .maximaValue").val();
				var min =$(".addForm .minimaValue").val();
				
				//是否为数字
				if(max===""||min===""){
					$(".errorDiv").html("预警参数范围不能为空");
					$(".errorDiv").show();
					return false;
				}
				
				if(isNaN(max)||isNaN(max)){
					$(".errorDiv").html("请输入数字");
					$(".errorDiv").show();
					return false;
				}
				
				max = Number(max);
				min = Number(min);
				
				if(max<=min){
					$(".errorDiv").html("最大值必须大于最小值");
					$(".errorDiv").show();
					return false;
				} else {
                    		    $(".errorDiv").hide();
				}
				if(!flag){
					//未通过验证
					return false;
				}
				$(".errorDiv").hide();
				$("#myModal .yes").attr("disabled",true);
				
				
				//提交新增
				$.ajax({
					url : ctx + '/equipment/alarm/addOrUpdateDefinition/add.mvc',
					type : "post",
					dataType : 'json',
					data : $(".addForm").serialize(),
					success : function(response) {
						//取消
						$('#myModal').modal('hide');
						if (response.result === true) {
							DialogUtil.success("保存成功");
							$('.dataTable').bootstrapTable('refresh');
						}else{
							$("#myModal .yes").attr("disabled",false);
							DialogUtil.error(response.message);
							return false;
						}
						
						
					},
					error : function(XMLHttpRequest, textStatus, errorThrown) {
						DialogUtil.error("系统错误");
					}
				});
				$("#myModal .yes").attr("disabled",true);
            		});
	        },
	        validateAlarmValue: function () {
	            $(".addForm .maximaValue").change(function () {
	                $(".errorDiv").hide();
	            });
	            $(".addForm .minimaValue").change(function () {
	                $(".errorDiv").hide();
		    });
		},
		modelChange : function(){
			$("#myModal").on("change",".modelCode",function(equipCode){
				console.log(equipCode);
				AlarmIndex.getEquipment($(this).val());
				AlarmIndex.getParam($(this).val());
			});
		},
		eqCodeChange : function(){
			$("#myModal").on("change",".eqCode",function(option){
				var name =$("#myModal .eqCode").find("option:selected").data("name");
				$("#myModal .eqName").val(name);
			});
		},
		paramNameChange : function(){
			$("#myModal").on("change",".paramName",function(){
				var name =$("#myModal .paramName").find("option:selected").data("range");
				$("#myModal .paramUnit").val(name);
			});
		},
		
		//删
		deleteDefinition : function(){
			$(".crud .delete").on("click",function(){
				var ids = $.map($('.dataTable').bootstrapTable('getSelections'), function (row) {
			        return row.pkId;
			    });
				if(ids.length <1){
					DialogUtil.warning("请选择记录");
			        return;
				}
				var index = 0;
				DialogUtil.ok_and_cancel("是否删除预警定义？",function(){
					$('.btn-primary.sure').attr("disabled",true);
			    	$.ajax({
						url: ctx +'/equipment/alarm/delDefinition/del.mvc',
					    type:"post", 
					    dataType:'json',
					    data : {
				        	pkIds : JSON.stringify(ids)
				        },
					    success : function(response){
					    	console.log(response);
					    	if (response.result == true) {
					    		$('.btn-primary.sure').attr("disabled",false);
					    		DialogUtil.warning("删除成功");
					    		$('.dataTable').bootstrapTable('refresh');
					    		return true;
					    	}
					    	if (response.result == false) {
					    		$('.btn-primary.sure').attr("disabled",false);
					    		DialogUtil.warning("删除失败");
					    		return false;
					    	}
					    	
					    },
					    error: function(XMLHttpRequest, textStatus, errorThrown){
					    	DialogUtil.warning("系统错误");
					    }
					});
			    }, function () {
			    });
		     });
		},
		
		//改
		update : function(){
			$(".crud .update").on("click",function(){
				$("#myModal .yes").attr("disabled",false);
				var selections =$('.dataTable').bootstrapTable('getSelections')
				if(selections.length != 1){
					DialogUtil.warning("请选择一行修改");
			        return;
				}
				$("#myModal .title").html("修改");
				$("#myModal").modal();
				AlarmIndex.getEmModel(selections[0].modelId);
				AlarmIndex.getEquipment(selections[0].modelCode,selections[0].eqCode);
				AlarmIndex.getParam(selections[0].modelCode,selections[0].paramName);
				//标准数据
				$("#myModal .paramStandard").val(selections[0].paramStandard);
				$("#myModal .maximaValue").val(selections[0].maximaValue);
				$("#myModal .minimaValue").val(selections[0].minimaValue);
				$("#myModal .promptName").val(selections[0].paramPromptName);
				$("#myModal .paramUnit").val(selections[0].paramUnit);
				$("#myModal .pkId").val(selections[0].pkId);
				
				$("#myModal .yes").attr("disabled",false);
			});
		},
		//刷新
		
		refresh : function(){
			$(".crud .refresh").on("click",function(){
				$('.dataTable').bootstrapTable('refresh');
			})
		}
		
		
	};
}();


jQuery(document).ready(function() {
	
	SystemCommon.getQueryEquipCode();
	
	//1.初始化Table
	AlarmIndex.initTable();
	AlarmIndex.validatorForm();
	AlarmIndex.clear();
	AlarmIndex.query();
	AlarmIndex.reset();
	
	
	AlarmUtil.init();
	
	
	
});